#ifndef MATRIX_H
#define MATRIX_H

// Creating Matrices
//gsl_matrix * gsl_matrix_alloc (size_t n1, size_t n2)
//gsl_matrix * gsl_matrix_calloc (size_t n1, size_t n2)
//void gsl_matrix_free (gsl_matrix * m)

// Setting and Getting
//double gsl_matrix_get (const gsl_matrix * m, size_t i, size_t j)
//void gsl_matrix_set (gsl_matrix * m, size_t i, size_t j, double x)

// Operating on Matrices
//int gsl_matrix_transpose (gsl_matrix * m)

// Printing Matrices
//int gsl_matrix_fprintf (FILE * stream, const gsl_matrix * m, const char * format)
gsl_matrix* invertMatrix(gsl_matrix* matrix);
void matrixMultiply(gsl_matrix* A, gsl_matrix* B, gsl_matrix* C);
void printMatrix(gsl_matrix* matrix);
void invertMatrix2x2(gsl_matrix* matrix, gsl_matrix* out);

#endif
